from typing import List

"""
  * 解题思路：先排序再插入
     * 1.排序规则：按照先H高度降序，K个数升序排序
     * 2.遍历排序后的数组，根据K插入到K的位置上
     *
     * 核心思想：高个子先站好位，矮个子插入到K位置上，前面肯定有K个高个子，矮个子再插到前面也满足K的要求
     *

作者：pphdsny
链接：https://leetcode-cn.com/problems/queue-reconstruction-by-height/solution/406-gen-ju-shen-gao-zhong-jian-dui-lie-java-xian-p/
来源：力扣（LeetCode）
著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。
"""


class Solution:
    def reconstructQueue(self, people: List[List[int]]) -> List[List[int]]:
        people.sort(key=lambda x: (-x[0], x[1]))
        print(people)
        n = len(people)
        ans = list()
        for i in range(len(people)):
            ans.insert(people[i][1], people[i])
            # ans[person[1] : person[1]] = [person]
        return ans


if __name__ == "__main__":

    # res = Solution().reconstructQueue([[7, 0], [4, 4], [5, 0], [6, 1], [5, 2]])
    res = Solution().reconstructQueue([[7, 0], [7, 1], [6, 1], [5, 0], [5, 2], [4, 4]])
    print(res)

